package com.huige.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @Author 朱志辉
 * @Create 2024/7/19 下午3:30
 * @Version 1.0
 * Description:  快速返回一个jsp模版页面
 */
@Controller
@RequestMapping(value = "jsp")
public class JspController {

    /**
     * TODO：快速查找视图
     *       1.方法的返回值是字符串类型
     *       2.不能添加@ResponseBody直接返回字符串给浏览器，不走视图，也不走视图解析器
     *       3.返回值 对应中间的视图名称
     * @return
     */
    @GetMapping("index")
    public String index(HttpServletRequest request) {
        request.setAttribute("data", "hello jsp!!");
        System.out.println("JspController.index");
        return "index";
    }

    /**
     * 转发：只能是项目下的资源
     *     1.方法的返回值写成字符串
     *     2.不能添加responseBody
     *     3.返回的字符串前 forward: /转发地址
     * @return
     */
    //转发
    @GetMapping("forward")
    public String forward() {
        System.out.println("JspController.forward");
        return "forward:/jsp/index";
    }

    /**
     * 重定向：
     *      1.方法的返回值是字符串
     *      2.不能添加responseBody
     *      3.返回的字符串前 redirect: /重定向地址
     *
     * @return
     */


    /**
     * 路径细节：【不使用Springmvc request response】
     *     转发是项目下的资源跳转。路径：项目下的地址
     *     重定向是服务器资源跳转。路径：服务器地址
     *
     * 使用Springmvc路径语法：
     *       "forward:路径" | "redirect: 路径"  重定向 ：资源地址也不需要写项目的根路径
     *       转发和重定向地址都一样
     *
     * @return
     */
    //重定向
    @GetMapping("redirect")
    public String redirect() {
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }

    @GetMapping("redirect/baidu")
    public String redirectBaidu() {
        System.out.println("JspController.redirect");
        return "redirect:http://www.baidu.com";
    }



}
